home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / asmsrc / tango2.lha / SOURCES / ray60.s.Clr D2 < prev    next >
Text File  |  1989-07-26  |  23KB  |  1,076 lines

  1. ; ****************************************
  2. ; ** INTRO NUMBER 5 (C) 1990 CRYPTIC UK **
  3. ; ** CODED BY: TANGO                    **
  4. ; ** MUSIC BY: COUNT                    **
  5. ; ****************************************
  6.  
  7.     opt c-
  8.     section blitter,code_c            Chip Ram please !!
  9.     include    df1:definitions            Give me some hardware reggies
  10.     include    df1:macros                Give me some macros
  11.     
  12.         
  13. ;LOCAL CONSTANTS
  14.  
  15. icra        equ $bfed01                
  16. ;allocmem     =-30-168                
  17. ;freemem     =-30-180                
  18. fontmemory    =4000
  19. MEMF_CHIP    EQU    1<<1        
  20. MEMF_CLEAR    EQU    1<<16        
  21. MEMORY    EQU    MEMF_CHIP+MEMF_CLEAR    ;allocates chip ram and clears it
  22.  
  23.  
  24.  
  25. TAKEOVER:
  26.     Move.l    #Blank,D1
  27.     Move.w    D1,Blank1l+2
  28.     Move.w    D1,Blank2l+2
  29.     Move.w    D1,Blank3l+2
  30.     Swap    D1
  31.     Move.w    d1,Blank1h+2
  32.     Move.w    d1,Blank2h+2
  33.     Move.w    d1,Blank3h+2
  34.     
  35.     LEA custom,a5        
  36.     LEA GFXLIB(PC),a1             Point to 'graphics.library'
  37.     MOVEQ #0,D0                     Doesn't matter which version
  38.      MOVE.L 4.w,a6                 EXECBASE
  39.     jsr    -132(a6)                 task switching off (forbid)
  40.      JSR -$228(a6)                  Openlibrary
  41.      MOVE.L D0,GFXBASE             Store library address
  42.     jsr    cyb_init
  43.         
  44. ;Now put the graphic addresses in the CopperList         
  45.  
  46.      move.l    screenx,d1            Bitplane memory address
  47.     move.w    d1,bp1lo+2            for scroll 1.
  48.      swap    d1
  49.      move.w    d1,bp1hi+2
  50.  
  51.      move.l    screenx,d1            Bitplane memory address
  52.     ADD.L    #10000,D1
  53.     move.w    d1,bp3lo+2            for scroll 1.
  54.      swap    d1
  55.      move.w    d1,bp3hi+2
  56.  
  57.      move.l    screenx,d1            Bitplane memory address
  58.     ADD.L    #10000*2,D1
  59.     move.w    d1,bp5lo+2            for scroll 1.
  60.      swap    d1
  61.      move.w    d1,bp5hi+2
  62.  
  63.      move.l    screeny,d1            Bitplane memory address
  64.     move.w    d1,abp1lo+2            for scroll 2.
  65.      swap    d1
  66.      move.w    d1,abp1hi+2
  67.  
  68.     move.l    screeny,d1            Bitplane memory address
  69.     ADD.L    #10000,D1
  70.     move.w    d1,abp3lo+2            for scroll 2.
  71.      swap    d1
  72.      move.w    d1,abp3hi+2
  73.  
  74.     move.l    screeny,d1            Bitplane memory address
  75.     ADD.L    #10000*2,D1
  76.     move.w    d1,abp5lo+2            for scroll 2.
  77.      swap    d1
  78.      move.w    d1,abp5hi+2
  79.  
  80.  
  81. ; ** SET UP EVEN BITPLANES 2,4,6 **
  82.  
  83.     MOVE.L    #PLAY2+18*44-2,D1
  84.     MOVE.W    D1,BP2LO+2
  85.     SWAP    D1
  86.     MOVE.W    D1,BP2HI+2
  87.     
  88.     MOVE.L    #PLAY2+18*44-2,D1
  89.     ADD.L    #44*290,D1
  90.     MOVE.W    D1,BP4LO+2
  91.     SWAP    D1
  92.     MOVE.W    D1,BP4HI+2
  93.     
  94.     MOVE.L    #PLAY2+18*44-2,D1
  95.     ADD.L    #44*290*2,D1
  96.     MOVE.W    D1,BP6LO+2
  97.     SWAP    D1
  98.     MOVE.W    D1,BP6HI+2
  99.     
  100.      move.l GFXBASE,d0            Move gfxbase offset to d0
  101.      MOVE.L D0,A6                
  102.      MOVE.W #$80,dmacon(a5)        Turn off copper whilst changing it
  103.      MOVE.L $32(A6),WBCOPPER         Store old (WBench) copper address
  104.      MOVE.L #OURCOPPER,$32(A6)    Point to new copper list (our own)
  105.      MOVE.W #$8080,dmacon(a5)    Re-enable copper
  106.      MOVE.W #$8010,intena(a5)        
  107.      MOVE.L $6c,old                Save work bench interrupt
  108.      MOVE.L #LEV3,$6c            Point to were to set up interrupt
  109.     move.w    intenar(a5),systemints
  110.     move.b    #%01111111,icra        Kill keyboard.
  111.         
  112. WAIT:     
  113.     BTST #6,$BFE001                This waits for the left
  114.      BNE.S    WAIT                mouse button to be pressed
  115.     move.l    4.w,a6                EXECBASE
  116.      MOVE.L old,$6c                Restore system interrupts
  117.     MOVE.L GFXBASE,A6
  118.      MOVE.W #$80,dmacon(a5)        Disable DMA
  119.      MOVE.L WBCOPPER,$32(A6)        Restore old copperlist
  120.      MOVE.W #$8080,dmacon(a5)    Enable DMA
  121.      move.w    systemints,d0        Systems interrupt
  122.      or.w    #$c000,d0
  123.      move.w    d0,intena(a5)        Enable OS interrupts
  124.      move.b    #%10011011,icra        Enable keyboard
  125.     clr.w    $dff0a8                Clear music
  126.     clr.w    $dff0b8
  127.     clr.w    $dff0c8
  128.     clr.w    $dff0d8
  129.     move.w    #$f,$dff096
  130.     rts
  131.  
  132.  
  133. ERROR:    
  134.     move.l 4.w,a6                Get EXECBASE
  135.     jsr    -138(a6)                Permit ( multi-tasking on )
  136.     moveq    #0,d0                Clear d0
  137.      RTS                            Return to AmigaDOS
  138.  
  139.  
  140. ;This is the NEW level 3 interrupt
  141.  
  142. LEV3:
  143.      Save_all                    Save all registers to the stack
  144.     lea    custom,a5
  145.     AND #$10,intreqr(a5)           Check if interrupt is from Copper 
  146.     BNE out
  147.     move.w    #$8010,$9c            Cause Copper interrupt                                
  148.  
  149. ; ** Main Routines called every VBI **
  150.     bsr    testscroll
  151.     bsr    testscroll2
  152.     bsr    bounce2
  153.     bsr    bounce
  154.     jsr    cyb_music
  155.             
  156. out:     
  157.     Return_all
  158.     DC.W $4ef9                    hex value for  JMP instruction
  159. old:     
  160.     DC.L 0                        will jump to normal interrupt
  161.  
  162.  
  163. ; ** THE SCROLL ROUTINE **
  164.  
  165. testscroll:
  166.     tst.l    stopper
  167.     beq.s    scroll
  168.     sub.l    #1,stopper
  169.     rts
  170. scroll:
  171.     cmp.l    #30,val                    Blitshifted all <<<
  172.     blo.s    coarse_scroll_it        No then get doing it !!
  173.     bsr        blit_char                Blit letter to screen
  174.     clr.l    val                        Reset index
  175. coarse_scroll_it:
  176.     bsr        coarse                    Scroll all line
  177.     rts                            
  178.  
  179. testscroll2:
  180.     tst.l    stopper2                Test for pause.
  181.     beq.s    scroll2
  182.     sub.l    #1,stopper2
  183.     rts
  184. scroll2:
  185.     cmp.l    #30,val2                Blitshifted all <<<
  186.     blo.s    coarse_scroll_it2        No then get doing it blitter man !!
  187.     bsr        blit_char2                Blit letter to screen
  188.     clr.l    val2                    Reset index
  189. coarse_scroll_it2:
  190.     bsr        coarse2                    Scroll all line
  191.     rts                            
  192.  
  193.     
  194. ; ** BLIT LETTER ON THE SCREEN **
  195.  
  196. blit_char
  197.     jsr        text
  198.     lea        custom,a5                Get custom chip address
  199.     move.l    screenx,a0                 The screen on which scrolly is.
  200.     move.l    #font,a1                 Put font in blitter source
  201.     add.l    d2,a1
  202.     MOVE.L    #2,D1
  203.     Sub.l    #4,A0
  204. blit_test:
  205.     btst    #14,$dff002                 Blitter busy !!!
  206.     bne    blit_test                     Lets wait till she finishes !
  207.     move.w    #$ffff,bltafwm(a5)        Mask 
  208.     move.w    #$ffff,bltalwm(a5)        Mask 
  209.     move.l    a0,bltdpth(a5)             Blitter dest D (BOTTOM OF SCREEN)
  210.     move.l    a1,bltapth(a5)             Blitter source A (SCROLLING FONT)
  211.     move.w    #36,bltamod(a5)             Modulo (20-1)*2
  212.     move.w    #44,bltdmod(a5)             Modulo (20-1)*2
  213.     move.w    #$9f0,bltcon0(a5)         Minterms D=A
  214.     clr.w    bltcon1(a5)                 Set Ascending mode
  215.      move.w    #34*64+2,bltsize(a5)     Blit size (SIZE OF FONT)
  216.     ADD.L    #10000,A0
  217.     ADD.L    #40*200,A1
  218.     DBF        D1,BLIT_TEST
  219.     rts                                  Return
  220.  
  221.  
  222. ; ** BLITSHIFT THE ENTIRE SCROLL LINE **
  223. ;
  224. ;     FUNCTION: TO BARREL SHIFT THE ENTIRE SCROLLING MESSAGE.
  225.  
  226. coarse:
  227.     lea        custom,a5                 
  228.     move.l    screenx,a0                
  229.     move.l    a0,a1
  230.     add.l    #2,a1
  231.     move.l    #2,d1
  232.     move    #12,d2                
  233.     incl    #4,val                    
  234.     ror        #4,d2                    ; Set to correct bits (12-15)
  235.     or.w    #$09f0,d2
  236. blit_wait:
  237.     btst    #14,$dff002            
  238.     bne        blit_wait
  239.     move.l    #-1,bltafwm(a5)
  240.     move.l    a1,bltapth(a5)
  241.     move.l    a0,bltdpth(a5)
  242.     move.w    #0,bltamod(a5)
  243.     move.w    #0,bltdmod(a5)
  244.     move.w    d2,bltcon0(a5)    
  245.     move.w    #34*64+20,bltsize(a5)
  246.     add.l    #10000,a0
  247.     add.l    #10000,a1
  248.     dbf        d1,blit_wait
  249.     rts    
  250.  
  251.  
  252.  
  253. ; ** SCROLL NUMBER TWO **
  254. ;
  255. ; DOCUMENTED IN SCROLL NUMBER ONE.
  256.  
  257. blit_char2:
  258.     jsr        text2
  259.     lea        custom,a5                
  260.     move.l    screeny,a0                 
  261.     move.l    #font,a1                 
  262.     add.l    d2,a1
  263.     MOVE.L    #2,D6
  264.     Sub.l    #4,A0
  265.  
  266. blit_test2:
  267.     btst    #14,$dff002                 
  268.     bne    blit_test2                     
  269.     move.w    #$ffff,bltafwm(a5)        
  270.     move.w    #$ffff,bltalwm(a5)        
  271.     move.l    a0,bltdpth(a5)             
  272.     move.l    a1,bltapth(a5)             
  273.     move.w    #36,bltamod(a5)             
  274.     move.w    #44,bltdmod(a5)             
  275.     move.w    #$9f0,bltcon0(a5)         
  276.     clr.w    bltcon1(a5)                 
  277.      move.w    #34*64+2,bltsize(a5)     
  278.     ADD.L    #10000,A0
  279.     ADD.L    #40*200,A1
  280.     DBF        D6,BLIT_TEST2
  281.     rts                                  
  282.  
  283. coarse2:
  284.     lea        custom,a5                 
  285.     move.l    screeny,a0                
  286.     move.l    a0,a1
  287.     add.l    #2,a1
  288.     move.l    #2,d4
  289.     incl    #4,val2                    
  290.     move    #12,d7                
  291.     ror        #4,d7                    
  292.     or        #%100111110000,d7        
  293. blit_wait2:
  294.     btst    #14,$dff002            
  295.     bne        blit_wait2
  296.     move.l    #-1,bltafwm(a5)
  297.     move.l    a1,bltapth(a5)
  298.     move.l    a0,bltdpth(a5)
  299.     move.w    #0,bltamod(a5)
  300.     move.w    #0,bltdmod(a5)
  301.     move.w    d7,bltcon0(a5)    
  302.     move.w    #34*64+20,bltsize(a5)
  303.     add.l    #10000,a0
  304.     add.l    #10000,a1
  305.     dbf        d4,blit_wait2
  306.     rts
  307.     
  308.  
  309.  
  310.  
  311. ; ** THIS CRAPPY CODE BOUNCES THE SCROLLY MESSAGE NUMBER TWO **
  312. ;
  313. ;     ENTRYS  : YCORD-HOW FAR UP AND DOWN SCREEN TO GO.
  314. ;             : DELTAY-WAIT COMMAND IN COPPERLIST.
  315. ;     FUNCTION: BOUNCE THE SCROLLY MESSAGE.
  316.  
  317. bounce:
  318.     cmp.l    #66,ycord
  319.     beq.s    up
  320.     add.l    #1,ycord
  321.     sub.b    #1,deltay
  322.     rts
  323. up: cmp.l    #66,ycordminus
  324.     beq.s    rst_cord
  325.     add.l    #1,ycordminus
  326.     add.b    #1,deltay
  327.     rts
  328. rst_cord:
  329.     clr.l    ycord
  330.     clr.l    ycordminus
  331.     rts
  332.     
  333.     even
  334.  
  335.  
  336. ; ** THIS CRAPPY CODE BOUNCES SCROLLY MESSAGE NUMBER ONE (ONE AT THE TOP) **
  337. ;
  338. ;     ENTRYS  : YCORD2-HOW FAR UP AND DOWN SCREEN TO GO.
  339. ;             : DELTAY2-WAIT COMMAND IN COPPERLIST.
  340. ;     FUNCTION: BOUNCE THE SCROLLY MESSAGE.
  341.  
  342. bounce2:
  343.     cmp.l    #66,ycord2
  344.     beq.s    up2
  345.     add.l    #1,ycord2
  346.     add.b    #1,deltay2
  347.     rts
  348. up2:cmp.l    #66,ycordminus2
  349.     beq.s    rst_cord2
  350.     add.l    #1,ycordminus2
  351.     sub.b    #1,deltay2
  352.     rts
  353. rst_cord2:
  354.     clr.l    ycord2
  355.     clr.l    ycordminus2
  356.     rts
  357.     
  358.     even
  359.  
  360.  
  361. ; ** CHARACTER DECODER ROUTINE **
  362.  
  363. ;    CHARACTER BASE ADDRESS RETURNED IN D2
  364. ;     JUST ADD THIS TO YOUR FONT ADDREES.
  365.  
  366. text:
  367.     Clr.l    d1
  368.     move.l    acurent,a2
  369.     move.b    (A2),d1
  370.     cmp.b    #254,d1
  371.     beq.s    stop_scroll
  372.     Cmp.b    #255,d1
  373.     bne        over
  374.     Move.l    #Texter,a2
  375.     MOVE.L    #TEXTER,ACURENT
  376.     Move.b    (a2),d1
  377. Over
  378.     Add.l    #1,Acurent
  379.     Lea        Char,a1
  380.     Sub.l    #32,d1
  381.     Add.l    d1,d1
  382.     Clr.l    d2
  383.     Move.w    (a1,d1),d2                ; CHAR BASE ADDRESS IN D2.
  384.     Rts
  385. stop_scroll:
  386.     move.l    #5136,d2                ; Blank letter.
  387.     add.l    #1,acurent
  388.     move.l    #150,stopper
  389.     rts
  390.  
  391.  
  392. ; ** CHARACTER OFFSETS TO FONT **
  393.     even
  394. Char:
  395.     dc.w    5136,3864,0,0,0,0,0,5132,3868,3872,0,0
  396.     dc.w    5128,3876,5124,0,3860,2584,2588,2592,2596,3840
  397.     dc.w    3844,3848,3852,3856,0,0,0,0,0,5120,0
  398.     dc.w    0,4,8,12,16,20,24,28,32,36,1280,1284,1288,1292,1296
  399.     dc.w    1300,1304,1308,1312,1316,2560,2564,2568,2572,2576,2580
  400.     dc.w    0,0,0
  401.     even
  402.  
  403. ; ** MESSAGE NUMBER ONE **
  404. Acurent:
  405.     DC.L    Texter
  406. Texter:
  407.     DC.B    " MR.COOL OF INFINITY "
  408.     DC.B    " THE STARFIELD WILL BE IN NEXT TIME (HAVING TROUBLE WITH IT)"
  409.     DC.B    " I DONT KNOW WHAT THE QUADRANT IS FOR IT OR THE COESENT OF DELTA 8 OVER OMEGA ???"
  410.     DC.B    "  OH ANY IDEAS ON THE ROTATION BIT ??? AND DONT SAY LSR !! AND WHAT DO YOU MEAN BY A COMPRESS ROUTINE ON THE SCROLLER ???"
  411.     DC.B    " ALL THE CODE FOR THE SCROLLER THAT KODAK DID HAS BEEN ALL RE-WROTE DUE TO THE FACT THAT WHEN I PUT MUSIC IN IT SLOOOOWED DOWN"
  412.     DC.B    "  ALSO IT WASN'T SET UP IN DUAL PLAYFIELD AND I THOUGHT THE SOURCE CODE WAS A BIT ON THE LONG SIDE."
  413.     DC.B    "  THIS CODE IS NOW 200K BUT WILL CRUNCH TO ABOUT 70K DUE TO THE FACT THERE ARE ALOT OF BLANK SCREENS IN THERE !!!"
  414.     DC.B    "  WELL WRITE SOON OR PHONE AND I'LL SEE YA IN BLACKPOOL (WILDTHING SAYS THAT YOUR PAYING ???? IS IT TRUE !!!) WELL SEE YA RAY"
  415.     DC.B    "        "
  416.     DC.B    "   TANGO     ",254
  417.     DC.B    "  THE COOL GUY OF CRYPTIC WITH THE MORE INTERESTING SCROLL TEXT THAN THAT SHIT ONE AT THE BOTTOM (NO DONT LOOK THERE!!)"
  418.     DC.B    "  I THINK ITS BY WILDTHING (THE OTHER COOL GUY IN CRYPTIC) SO ITS ABOUT TO BE WEIRD AND FULL OF SPILLENG MASTIKES"
  419.     DC.B    "  DONATELLO HAS BEEN BANNED FROM USING THE COOL CAR DUE TO THE FACT HIS DAD HAS BEEN WATCHING THE MILEAGE !!!  THE OTHER DAY WHEN WE HAD BEEN TO BLACKPOOL WE HAD CLOCKED UP"
  420.     DC.B    " 200 MILES !!!  AND IN THE LAST WEEK OR SO WE HAVE CLOCKED UP AROUND 700 MILES !!!"
  421.     DC.B    "   ARE YOU STILL HERE RAY OR HAVE YOU GONE TO THE OTHER BORING SHIT BLITSHIFT SCROLL ???"
  422.     DC.B    "  WILDTHING GO AND FUK YOURSELF AND STOP TELLING ME TO HURRY UP !!!"
  423.     DC.B    "  A MESSAGE TO THE 2 BIRDS IN BOLTON ON SATURDAY WE'D HAVE GIVEN YOU A LIFT IF PROTON WASN'T IN THE BACK (NO ROOM) SEE YA NEXT WEEK FOR A GOOD TALK AND A GOOD ....."
  424.     DC.B    "  MESSAGE TO VIKI YOU TART WILDTHING WANTS HIS PACKET OF MATES BACK HE ONLY USED TWO, BY THE WAY YOU OWE HIM 50 QUID FOR THAT NIGHT !! HE SAYS !!!"
  425.     DC.B    "     WELL I'M GOING NOW TO GO AND DO SOMETHING MORE INTERESTING LIKE A  GOOD .U.K  YOU CAN GO AND READ THAT BORING DIKS SCROLL NOW     GO ON READ IT AND FALL TO SLEEP         SEE YA"
  426.     DC.B    "      WRAPPP                    "
  427.     DC.B    255
  428.     even
  429.  
  430.  
  431. text2:
  432.     Clr.l    d1
  433.     move.l    acurent2,a2
  434.     move.b    (A2),d1
  435.     cmp.b    #254,d1
  436.     beq        pause_scroll
  437.     Cmp.b    #255,d1
  438.     bne        over2
  439.     Move.l    #Texter2,a2
  440.     MOVE.L    #TEXTER2,ACURENT2        ; RESET TO BEGINING OF MESSAGE.
  441.     Move.b    (a2),d1
  442. Over2:
  443.     Add.l    #1,Acurent2
  444.     Lea        Char,a1
  445.     Sub.l    #32,d1
  446.     Add.l    d1,d1
  447.     Clr.l    d2
  448.     Move.w    (a1,d1),d2        ; CHAR BASE ADDRESS IN D2.
  449.     rts
  450. pause_scroll:
  451.     move.l    #5136,d2
  452.     add.l    #1,acurent2
  453.     move.l    #150,stopper2
  454.     rts
  455.  
  456.  
  457. ; ** MESSAGE NUMBER TWO **
  458.     even
  459. Acurent2
  460.     Dc.l    Texter2
  461. Texter2:
  462.     DC.B    " WILD THING THE KNOB ED WARNING HALF OF THE SHIT IN THIS SCROLL TEXT IS NOT TRUE "
  463.     Dc.b    " WILD THING",254," TYPING YET SOME MORE AMAZYING SCROLL TEXT"
  464.     DC.B    " DID YOU NO THAT IF I BENT OVER I COULD FUCK MY SELF MY DICK IS THAT BIG!!!!!! "
  465.     DC.B    " ASK VIKI SHE WILL TELL YOU I AM GOING TO SEND YOU THE FINISHED BOOT MENU ISTALLER IN THE NEXT FEW DAYS"
  466.     DC.B    " COULD YOU SEND ME DOWN SPIDDYS PHONE NUMBER SO I CAN GIVE HIM SOME SERIOUS BULLSHIT ABOUT WHY THERE HAS BEEN SUCH A BIG DELAY"
  467.     DC.B    " DID YOU NO THAT -3 SQUARED = 9 I DO HA HA CAN I THINK OF ANY MORE BULLSHIT TO TYPE"
  468.     DC.B    " THAT SORCE YOU SENT ME OF THE VECTORS IS NOT KREATORS ITS SOME THING I HAD DONE AGES BACK ONLY KIDDING"
  469.     DC.B    " IS FILM HEAD "
  470.     DC.B    "   KODAK   ",254," THERE YES WELL WHY THE FUCK DID YOU NOT USE DUAL PLAYFIELD FOR THEM TWO SCROLLERS OR DID RAY NOT TELL YOU"
  471.     DC.B    " HE WANTED A PICTURE BEHIND HIM DID YOU NO THAT PROTON WANTS TO GET BEHIND YOU YES HE IS GAY "
  472.     DC.B    " SO HE SAYS NO I BETTER NOT START RYMING CAUSE I WILL GET YOU LOT CRYING BECAUSE IT IS NOT VERY GOOD UNDERSTOOD THERE I AM AT IT AGAIN"
  473.     DC.B    " IS ENT LIFE A BITCH AND THEN YOU MARRY ONE BAD NEWS EH WHATS THE DIFFERENCE BETWEEN MARAGE AND PRISON YOU LIKE THE FOOD IN PRISON"
  474.     DC.B    " THATS ALL FOR NOW NO IT ISNT I AM BLACK WELL I NO THAT I MEAN I AM BACK MESSAGE TO SPIDY RAY INFORMS ME THAT YOU DO MOST COMPS"
  475.     DC.B    " HOW COME I HAVE NOT GOT NONE I AM WELL PISSED OFF YESS YESS YESS HARDER HARDER THOSE WHERE VIKI WORDS WHEN I FUCKED HER BRAINS OUT"
  476.     DC.B    " YES I AM A MENTALY DERANGED BIG DICKED COOL PERSON I THINK"
  477.     DC.B    " WHAT DO YOU THINK OF THE BORRING SCROLL TEXT ABOVE "
  478.     DC.B    " NOW CLICK THAT PUSSY BUTTON AND QUIT THIS SHIT I MEAN COW DUNG I MEAN  FUCK IT PRESS IT OR I WILL",255
  479.     even
  480.  
  481.  
  482. ;                **********************************************
  483. ;                ** THE MUZAX PLAY ROUTINE FOR NOISE TRACKER ** 
  484. ;                  ******************************************
  485.  
  486.  
  487. MUZAX:
  488.  
  489.     jsr    CYB_init
  490.  
  491. end:    rts
  492. CYB_init:lea    CYB_data,a0
  493.     add.l    #$03b8,a0
  494.     moveq    #$7f,d0
  495.     moveq    #0,d1
  496. CYB_init1:
  497.     move.l    d1,d2
  498.     subq.w    #1,d0
  499. CYB_init2:
  500.     move.b    (a0)+,d1
  501.     cmp.b    d2,d1
  502.     bgt.s    CYB_init1
  503.     dbf    d0,CYB_init2
  504.     addq.b    #1,d2
  505. CYB_init3:
  506.     lea    CYB_data,a0
  507.     lea    CYB_sample1(pc),a1
  508.     asl.l    #8,d2
  509.     asl.l    #2,d2
  510.     add.l    #$438,d2
  511.     add.l    a0,d2
  512.     moveq    #$1e,d0
  513. CYB_init4:
  514.     move.l    d2,(a1)+
  515.     moveq    #0,d1
  516.     move.w    42(a0),d1
  517.     asl.l    #1,d1
  518.     add.l    d1,d2
  519.     add.l    #$1e,a0
  520.     dbf    d0,CYB_init4
  521.     lea    CYB_sample1(PC),a0
  522.     moveq    #0,d0
  523. CYB_clear:
  524.     move.l    (a0,d0.w),a1
  525.     clr.l    (a1)
  526.     addq.w    #4,d0
  527.     cmp.w    #$7c,d0
  528.     bne.s    CYB_clear
  529.     clr.w    $dff0a8
  530.     clr.w    $dff0b8
  531.     clr.w    $dff0c8
  532.     clr.w    $dff0d8
  533.     clr.l    CYB_partnrplay
  534.     clr.l    CYB_partnote
  535.     clr.l    CYB_partpoint
  536.     move.b    CYB_data+$3b6,CYB_maxpart+1
  537.     rts
  538.     rts
  539. CYB_music:
  540.     addq.w    #1,CYB_counter
  541. CYB_cool:cmp.w    #6,CYB_counter
  542.     bne.s    CYB_notsix
  543.     clr.w    CYB_counter
  544.     bra    CYB_rout2
  545. CYB_notsix:
  546.     lea    CYB_aud1temp(PC),a6
  547.     tst.b    3(a6)
  548.     beq.s    CYB_arp1
  549.     lea    $dff0a0,a5        
  550.     bsr.s    CYB_arprout
  551. CYB_arp1:lea    CYB_aud2temp(PC),a6
  552.     tst.b    3(a6)
  553.     beq.s    CYB_arp2
  554.     lea    $dff0b0,a5
  555.     bsr.s    CYB_arprout
  556. CYB_arp2:lea    CYB_aud3temp(PC),a6
  557.     tst.b    3(a6)
  558.     beq.s    CYB_arp3
  559.     lea    $dff0c0,a5
  560.     bsr.s    CYB_arprout
  561. CYB_arp3:lea    CYB_aud4temp(PC),a6
  562.     tst.b    3(a6)
  563.     beq.s    CYB_arp4
  564.     lea    $dff0d0,a5
  565.     bra.s    CYB_arprout
  566. CYB_arp4:    rts
  567. CYB_arprout:
  568.     move.b    2(a6),d0
  569.     and.b    #$0f,d0
  570.     tst.b    d0
  571.     beq    CYB_arpegrt
  572.     cmp.b    #$01,d0
  573.     beq.s    CYB_portup
  574.     cmp.b    #$02,d0
  575.     beq.s    CYB_portdwn
  576.     cmp.b    #$0a,d0
  577.     beq.s    CYB_volslide
  578.     rts
  579. CYB_portup:
  580.     moveq    #0,d0
  581.     move.b    3(a6),d0
  582.     sub.w    d0,22(a6)
  583.     cmp.w    #$71,22(a6)
  584.     bpl.s    CYB_ok1
  585.     move.w    #$71,22(a6)
  586. CYB_ok1:    move.w    22(a6),6(a5)
  587.     rts
  588. CYB_portdwn:
  589.     moveq    #0,d0
  590.     move.b    3(a6),d0
  591.     add.w    d0,22(a6)
  592.     cmp.w    #$538,22(a6)
  593.     bmi.s    CYB_ok2
  594.     move.w    #$538,22(a6)
  595. CYB_ok2:    move.w    22(a6),6(a5)
  596.     rts
  597. CYB_volslide:
  598.     moveq    #0,d0
  599.     move.b    3(a6),d0
  600.     lsr.b    #4,d0
  601.     tst.b    d0
  602.     beq.s    CYB_voldwn
  603.     add.w    d0,18(a6)
  604.     cmp.w    #64,18(a6)
  605.     bmi.s    CYB_ok3
  606.     move.w    #64,18(a6)
  607. CYB_ok3:    move.w    18(a6),8(a5)
  608.     rts
  609. CYB_voldwn:
  610.     moveq    #0,d0
  611.     move.b    3(a6),d0
  612.     and.b    #$0f,d0
  613.     sub.w    d0,18(a6)
  614.     bpl.s    CYB_ok4
  615.     clr.w    18(a6)
  616. CYB_ok4:    move.w    18(a6),8(a5)
  617.     rts
  618. CYB_arpegrt:
  619.     move.w    CYB_counter(PC),d0
  620.     cmp.w    #1,d0
  621.     beq.s    CYB_loop2
  622.     cmp.w    #2,d0
  623.     beq.s    CYB_loop3
  624.     cmp.w    #3,d0
  625.     beq.s    CYB_loop4
  626.     cmp.w    #4,d0
  627.     beq.s    CYB_loop2
  628.     cmp.w    #5,d0
  629.     beq.s    CYB_loop3
  630.     rts
  631. CYB_loop2:
  632.     moveq    #0,d0
  633.     move.b    3(a6),d0
  634.     lsr.b    #4,d0
  635.     bra.s    CYB_cont
  636. CYB_loop3:
  637.     moveq    #$00,d0
  638.     move.b    3(a6),d0
  639.     and.b    #$0f,d0
  640.     bra.s    CYB_cont
  641. CYB_loop4:
  642.     move.w    16(a6),d2
  643.     bra.s    CYB_endpart
  644. CYB_cont:
  645.     add.w    d0,d0
  646.     moveq    #0,d1
  647.     move.w    16(a6),d1
  648.     and.w    #$fff,d1
  649.     lea    CYB_arpeggio(PC),a0
  650. CYB_loop5:
  651.     move.w    (a0,d0),d2
  652.     cmp.w    (a0),d1
  653.     beq.s    CYB_endpart
  654.     addq.l    #2,a0
  655.     bra.s    CYB_loop5
  656. CYB_endpart:
  657.     move.w    d2,6(a5)
  658.     rts
  659. CYB_rout2:
  660.     lea    CYB_data,a0
  661.     move.l    a0,a3
  662.     add.l    #$0c,a3
  663.     move.l    a0,a2
  664.     add.l    #$3b8,a2
  665.     add.l    #$43c,a0
  666.     move.l    CYB_partnrplay(PC),d0
  667.     moveq    #0,d1
  668.     move.b    (a2,d0),d1
  669.     asl.l    #8,d1
  670.     asl.l    #2,d1
  671.     add.l    CYB_partnote(PC),d1
  672.     move.l    d1,CYB_partpoint
  673.     clr.w    CYB_dmacon
  674.     lea    $dff0a0,a5
  675.     lea    CYB_aud1temp(PC),a6
  676.     bsr    CYB_playit
  677.     lea    $dff0b0,a5
  678.     lea    CYB_aud2temp(PC),a6
  679.     bsr    CYB_playit
  680.     lea    $dff0c0,a5
  681.     lea    CYB_aud3temp(PC),a6
  682.     bsr    CYB_playit
  683.     lea    $dff0d0,a5
  684.     lea    CYB_aud4temp(PC),a6
  685.     bsr    CYB_playit
  686.     move.w    #$01f4,d0
  687. CYB_rls:    dbf    d0,CYB_rls
  688.     move.w    #$8000,d0
  689.     or.w    CYB_dmacon,d0
  690.     move.w    d0,$dff096
  691.     lea    CYB_aud4temp(PC),a6
  692.     cmp.w    #1,14(a6)
  693.     bne.s    CYB_voice3
  694.     move.l    10(a6),$dff0d0
  695.     move.w    #1,$dff0d4
  696. CYB_voice3:
  697.     
  698.     lea    CYB_aud3temp(PC),a6
  699.     cmp.w    #1,14(a6)
  700.     bne.s    CYB_voice2
  701.     move.w    #1,$dff0c4
  702. CYB_voice2:
  703.     
  704.     lea    CYB_aud2temp(PC),a6
  705.     cmp.w    #1,14(a6)
  706.     bne.s    CYB_voice1
  707.     move.l    10(a6),$dff0b0
  708.     move.w    #1,$dff0b4
  709. CYB_voice1:
  710.     lea    CYB_aud1temp(PC),a6
  711.     cmp.w    #1,14(a6)
  712.     bne.s    CYB_voice0
  713.     move.l    10(a6),$dff0a0
  714.     move.w    #1,$dff0a4
  715. CYB_voice0:
  716.     move.l    CYB_partnote(PC),d0
  717.     add.l    #$10,d0
  718.     move.l    d0,CYB_partnote
  719.     cmp.l    #$400,d0
  720.     bne.s    CYB_stop
  721. CYB_higher:
  722.     clr.l    CYB_partnote
  723.     addq.l    #1,CYB_partnrplay
  724.     moveq    #0,d0
  725.     move.w    CYB_maxpart(PC),d0
  726.     move.l    CYB_partnrplay(PC),d1
  727.     cmp.l    d0,d1
  728.     bne.s    CYB_stop
  729.     clr.l    CYB_partnrplay
  730.     ;st    Pflag
  731. CYB_stop:tst.w    CYB_status
  732.     beq.s    CYB_stop2
  733.     clr.w    CYB_status
  734.     bra.s    CYB_higher
  735. CYB_stop2:
  736.     rts
  737. CYB_playit:
  738.     
  739.     move.l    (a0,d1.l),(a6)
  740.     addq.l    #4,d1
  741.     moveq    #0,d2
  742.     move.b    2(a6),d2
  743.     and.b    #$f0,d2
  744.     lsr.b    #4,d2
  745.     move.b    (a6),d0
  746.     and.b    #$f0,d0
  747.     or.b    d0,d2
  748.     tst.b    d2
  749.     beq.s    CYB_nosamplechange
  750.     moveq    #0,d3
  751.     lea    CYB_samples(PC),a1
  752.     move.l    d2,d4
  753.     asl.l    #2,d2
  754.     mulu    #$1e,d4
  755.     move.l    (a1,d2),4(a6)
  756.     move.w    (a3,d4.l),8(a6)
  757.     move.w    2(a3,d4.l),18(a6)
  758.     move.w    4(a3,d4.l),d3
  759.     tst.w    d3
  760.     beq.s    CYB_displace
  761.     move.l    4(a6),d2
  762.     add.l    d3,d2
  763.     move.l    d2,4(a6)
  764.     move.l    d2,10(a6)
  765.     move.w    6(a3,d4.l),8(a6)
  766.     move.w    6(a3,d4.l),14(a6)
  767.     move.w    18(a6),8(a5)
  768.     bra.s    CYB_nosamplechange
  769. CYB_displace:
  770.     move.l    4(a6),d2
  771.     add.l    d3,d2
  772.     move.l    d2,10(a6)
  773.     move.w    6(a3,d4.l),14(a6)
  774.     move.w    18(a6),8(a5)
  775. CYB_nosamplechange:
  776.     move.w    (a6),d0
  777.     and.w    #$fff,d0
  778.     tst.w    d0
  779.     beq.s    CYB_retrout
  780.     move.w    (a6),16(a6)
  781.     move.w    20(a6),$dff096
  782.     move.l    4(a6),(a5)
  783.     move.w    8(a6),4(a5)
  784.     move.w    (a6),d0
  785.     and.w    #$fff,d0
  786.     move.w    d0,6(a5)
  787.     move.w    20(a6),d0
  788.     or.w    d0,CYB_dmacon
  789. CYB_retrout:
  790.     tst.w    (a6)
  791.     beq.s    CYB_nonewper
  792.     move.w    (a6),22(a6)
  793. CYB_nonewper:
  794.     move.b    2(a6),d0
  795.     and.b    #$0f,d0
  796.     cmp.b    #$0b,d0
  797.     beq.s    CYB_posjmp
  798.     cmp.b    #$0c,d0
  799.     beq.s    CYB_setvol
  800.     cmp.b    #$0d,d0
  801.     beq.s    CYB_break
  802.     cmp.b    #$0e,d0
  803.     beq.s    CYB_setfil
  804.     cmp.b    #$0f,d0
  805.     beq.s    CYB_setspeed
  806.     rts
  807. CYB_posjmp:
  808.     not.w    CYB_status
  809.     moveq    #0,d0
  810.     move.b    3(a6),d0
  811.     subq.b    #1,d0
  812.     move.l    d0,CYB_partnrplay
  813.     rts
  814. CYB_setvol:
  815.     move.b    3(a6),8(a5)
  816.     rts
  817. CYB_break:
  818.     not.w    CYB_status
  819.     rts
  820. CYB_setfil:
  821.     moveq    #0,d0
  822.     move.b    3(a6),d0
  823.     and.b    #1,d0
  824.     rol.b    #1,d0
  825.     and.b    #$fd,$bfe001
  826.     or.b    d0,$bfe001
  827.     rts
  828. CYB_setspeed:
  829.     move.b    3(a6),d0
  830.     and.b    #$0f,d0
  831.     beq.s    CYB_back
  832.     clr.w    CYB_counter
  833.     move.b    d0,CYB_cool+3
  834. CYB_back:    rts
  835. CYB_aud1temp:
  836.     dcb.w    10,0
  837.     dc.w    1
  838.     dcb.w    2,0
  839. CYB_aud2temp:
  840.     dcb.w    10,0
  841.     dc.w    2
  842.     dcb.w    2,0
  843. CYB_aud3temp:
  844.     dcb.w    10,0
  845.     dc.w    4
  846.     dcb.w    2,0
  847. CYB_aud4temp:
  848.     dcb.w    10,0
  849.     dc.w    8
  850.     dcb.w    2,0
  851. CYB_partnote:    dc.l    0
  852. CYB_partnrplay:    dc.l    0
  853. CYB_counter:    dc.w    0
  854. CYB_partpoint:    dc.l    0
  855. CYB_samples:    dc.l    0
  856. CYB_sample1:    dcb.l    31,0
  857. CYB_maxpart:    dc.w    0
  858. CYB_dmacon:    dc.w    0
  859. CYB_status:    dc.w    0
  860. CYB_arpeggio:
  861.     dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c
  862.     dc.w $023a,$021a,$01fc,$01e0,$01c5,$01ac,$0194,$017d
  863.     dc.w $0168,$0153,$0140,$012e,$011d,$010d,$00fe,$00f0
  864.     dc.w $00e2,$00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097
  865.     dc.w $008f,$0087,$007f,$0078,$0071,$0000,$0000,$0000
  866.  
  867.  
  868.             
  869.  
  870. ; ** THE COPPERLIST **
  871. OURCOPPER:
  872. Blank1L    dc.w    bpl1ptl,$0000
  873. Blank1H    dc.w    bpl1pth,$0000
  874. Blank2L    dc.w    bpl3ptl,$0000
  875. Blank2H    dc.w    bpl3pth,$0000
  876. Blank3L    dc.w    bpl5ptl,$0000
  877. Blank3H    dc.w    bpl5pth,$0000
  878.         dc.w    $120,0
  879.         dc.w    $122,0
  880.         dc.w    bpl1mod,4,bpl2mod,0
  881.         dc.w    diwstrt,$2c81-32,diwstop,$2cc1+32
  882.         dc.w    bplcon0,$6600,bplcon1,$0000
  883.         dc.w    ddfstrt,$28,ddfstop,$d0
  884.         dc.w    color01,$000
  885.         dc.w    color08,$000,color09,$ff0,color10,$ee0,color11,$dd0
  886.         dc.w    color12,$de0,color13,$dc0,color14,$db0,color15,$da0
  887. bp2lo:    dc.w    bpl2ptl,$0000
  888. bp2hi:    dc.w    bpl2pth,$0000
  889. bp4lo:    dc.w    bpl4ptl,$0000
  890. bp4hi:    dc.w    bpl4pth,$0000
  891. bp6lo:    dc.w    bpl6ptl,$0000
  892. bp6hi:    dc.w    bpl6pth,$0000
  893. deltay2:wait    $3909,$fffe
  894. bp1lo:    dc.w    bpl1ptl,$0000
  895. bp1hi:    dc.w    bpl1pth,$0000
  896. bp3lo:    dc.w    bpl3ptl,$0000
  897. bp3hi:    dc.w    bpl3pth,$0000
  898. bp5lo:    dc.w    bpl5ptl,$0000
  899. bp5hi:    dc.w    bpl5pth,$0000
  900.          DC.W    color01,$eee
  901.          Dc.w    color02,$dde
  902.         DC.W    color03,$bbd
  903.         DC.W    color04,$aac
  904.         DC.W    color05,$88c
  905.         DC.W    color06,$77b
  906.         DC.W    color07,$65a
  907.         dc.w    color01,$eee
  908.         wait    $5109,$fffe
  909.         dc.w    bpl1mod,-44
  910.         wait    $5209,$fffe
  911.         dc.w    bpl1mod,4
  912.         wait    $5309,$fffe
  913.         dc.w    bpl1mod,-44
  914.         wait    $5409,$fffe
  915.         dc.w    bpl1mod,4
  916.         wait    $5509,$fffe
  917.         dc.w    bpl1mod,-44
  918.         wait    $5609,$fffe
  919.         dc.w    bpl1mod,4
  920.         wait    $5709,$fffe
  921.         dc.w    bpl1mod,-44
  922.         wait    $5809,$fffe
  923.         dc.w    bpl1mod,4
  924.         wait    $5909,$fffe
  925.         dc.w    bpl1mod,-44
  926.         wait    $5a09,$fffe
  927.         dc.w    bpl1mod,4
  928.         wait    $5b09,$fffe
  929.         dc.w    bpl1mod,-44
  930.         wait    $5c09,$fffe
  931.         dc.w    bpl1mod,4
  932.         wait    $5d09,$fffe
  933.         dc.w    bpl1mod,-44
  934.         wait    $5e09,$fffe
  935.         dc.w    bpl1mod,4
  936.         wait    $5f09,$fffe
  937.         dc.w    bpl1mod,-44
  938.         wait    $6009,$fffe
  939.         dc.w    bpl1mod,4
  940.         wait    $6109,$fffe
  941.         dc.w    bpl1mod,-44
  942.         wait    $6209,$fffe
  943.         dc.w    bpl1mod,4
  944.         wait    $6309,$fffe
  945.         dc.w    bpl1mod,-44
  946.         wait    $6409,$fffe
  947.         dc.w    bpl1mod,4
  948.         wait    $6509,$fffe
  949.         dc.w    bpl1mod,-44
  950.         wait    $6609,$fffe
  951.         dc.w    bpl1mod,4
  952.         wait    $6709,$fffe
  953.         dc.w    bpl1mod,-44
  954.         wait    $6809,$fffe
  955.         dc.w    bpl1mod,4
  956.         wait    $6909,$fffe
  957.         dc.w    bpl1mod,-44
  958.         wait    $6a09,$fffe
  959.         dc.w    bpl1mod,4
  960.         wait    $6b09,$fffe
  961.         dc.w    bpl1mod,-44
  962.         wait    $6c09,$fffe
  963.         dc.w    bpl1mod,4
  964.         wait    $6d09,$fffe
  965.         dc.w    bpl1mod,-44
  966.         wait    $6e09,$fffe
  967.         dc.w    bpl1mod,4
  968.         wait    $6f09,$fffe
  969.         dc.w    bpl1mod,-44
  970.         wait    $7009,$fffe
  971.         dc.w    bpl1mod,4
  972.         wait    $7109,$fffe
  973.         dc.w    bpl1mod,-44
  974.         wait    $7209,$fffe
  975.         dc.w    bpl1mod,4
  976.         wait    $7309,$fffe
  977.         dc.w    bpl1mod,-44
  978.         wait    $7409,$fffe
  979.         dc.w    bpl1mod,4
  980.         wait    $7509,$fffe
  981.         dc.w    bpl1mod,-44
  982.         wait    $7609,$fffe
  983.         dc.w    bpl1mod,4
  984.         wait    $7709,$fffe
  985.         dc.w    bpl1mod,-44
  986.         wait    $7809,$fffe
  987.         dc.w    bpl1mod,4
  988.         wait    $7909,$fffe
  989.         dc.w    bpl1mod,-44
  990.         wait    $7a09,$fffe
  991.         dc.w    bpl1mod,4
  992.         wait    $7b09,$fffe
  993.         dc.w    bpl1mod,-44
  994.         wait    $7c09,$fffe
  995.         dc.w    bpl1mod,4
  996.         wait    $7d09,$fffe
  997.         dc.w    bpl1mod,-44
  998.         wait    $7e09,$fffe
  999.         dc.w    bpl1mod,4
  1000.         wait    $7f09,$fffe
  1001.         dc.w    bpl1mod,-44
  1002.         wait    $8009,$fffe
  1003.         dc.w    bpl1mod,4
  1004.  
  1005. deltay:    wait    $da09,$fffe
  1006. abp1lo:    dc.w    bpl1ptl,$0000
  1007. abp1hi:    dc.w    bpl1pth,$0000
  1008. abp3lo:    dc.w    bpl3ptl,$0000
  1009. abp3hi:    dc.w    bpl3pth,$0000
  1010. abp5lo:    dc.w    bpl5ptl,$0000
  1011. abp5hi:    dc.w    bpl5pth,$0000
  1012.  
  1013.         DC.W    color01,$ee0
  1014.          Dc.w    color02,$dd0
  1015.         DC.W    color03,$bb0
  1016.         DC.W    color04,$aa0
  1017.         DC.W    color05,$880
  1018.         DC.W    color06,$770
  1019.         DC.W    color07,$650
  1020.         end_copper
  1021.         
  1022.  
  1023. ;LOCAL CONSTANTS
  1024.  
  1025. WBCOPPER:        DC.L    0
  1026. GFXLIB:            DC.B     "graphics.library",0
  1027. GFXBASE:        DC.L    0
  1028. systemints:        dc.l    0
  1029. scroll_offset:    dc.l    0
  1030. screenx:        dc.l    picture
  1031. screeny:        dc.l    picture2
  1032. letter:            dc.b    0
  1033. letter2:        dc.b    0
  1034. val:            dc.l    0
  1035. val2:            dc.l    0
  1036. stopper:        dc.l    0
  1037. stopper2:        dc.l    0
  1038. speed:            dc.w    12
  1039. ycord:        dc.l    0
  1040. ycordminus:    dc.l    0
  1041. ycord2:        dc.l    0
  1042. ycordminus2:dc.l    0
  1043. Blank        Dcb.b    4000,0
  1044.  
  1045. ;BINARY FILES TO BE INCLUDED
  1046.     EVEN
  1047. FONTSPACE:
  1048. font:    
  1049.     incbin    df1:METALCHARS
  1050. picture2    
  1051.     dcb.b    10000*3,0
  1052. picture:
  1053.     dcb.b    10000*3,0
  1054. PLAY2:
  1055.     INCBIN    DF1:PIC.IFF2
  1056. cyb_data:
  1057.     incbin    df1:mod.slip 
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.  
  1065.     
  1066.     
  1067.  
  1068.  
  1069.  
  1070.  
  1071.  
  1072.  
  1073.  
  1074.     
  1075.  
  1076.